1. Field of the Invention
This invention relates generally to the field of computing technology and more particularly concerns the initialization routine of a computer system which prepares the system for the loading of an operating system.
2. Description of the Related Art
During a computer system's initialization routine, commonly referred to as a boot sequence, a variety of diagnostics are performed to ascertain the availability and status of hardware devices and ensure proper operation of components. For example, during initialization, a system BIOS executes a boot program which invokes a series of system checks to ascertain the location, number and identity of various devices connected to the computer system. The processing components may be a variety of host adapter cards including, by way of example only, a video display adapter, a network adapter, a SCSI adapter or other similar device. Further, these host adapters cards may either be non-processor based, such as some SCSI and RAID controllers, or may be processor based, such as some high end or low end RAID controllers. In any event, each of these processing components have an associated Option ROM BIOS chip.
FIG. 1A shows a block diagram representing an Option ROM BIOS chip for an adapter card having a BIOS image. The Option ROM BIOS chip 20 includes program instructions known as the Option ROM BIOS, and is also referred to herein as a BIOS image 22. As the need for more functionality in the initialization process continues to grow, the BIOS image 22 necessarily grows in size. A typical size of a BIOS image 22 utilized in RAID controller applications is about 64K. The contents of the BIOS image 22 includes, among other things, a header, memory allocator code, decompressor code, runtime code, initialization code, and configuration utility code. A typical processor-based RAID controller, such as the AAA-130SA ULTRA WIDE SCSI RAID Card manufactured by the Adaptec, Inc. of Milpitas, Calif. may have a compressed BIOS image size of approximately 64K.
FIG. 1B shows a block diagram illustrating the memory areas within a system RAM of a computer system. At boot-up, the system BIOS loads the BIOS image 22 to the system RAM 40. As is well known, the BIOS image 22 is loaded to an area of the system RAM that is dedicated for this use. As shown in FIG. 1B, a hexadecimal address range between C800:00 and DFFF:00 is often referred to as Option ROM memory space. For discussion purposes, it should be assumed that BIOS image-1 22a represents the copied 64K BIOS image 22. Once the BIOS image is copied to this memory space, selected portions of the BIOS image are decompressed and copied to conventional memory 42. The decompressed code is then implemented to initialize the host adapter associated with the Option ROM BIOS chip 20.
Although no problems arise during the initialization of Option ROM BIOS chip 20, there many situations in which a computer system needs to initialize several Option ROM BIOS chips. Because the size of the BIOS image continues to grow, the Option ROM memory space can be quickly consumed. This problem is pictorially illustrated in FIG. 1B, where three BIOS images 22a, 22b, and 22c need to be copied to the Option ROM memory space. After the images 22a, 22b, and 22c are in the Option ROM space, there is no other memory available for additional BIOS images or other types of initialization code such as for example, configuration code. Therefore, if additional memory space is needed, a major problem of memory deficiency would exist.
If the system BIOS encounters uncompressed BIOS images, there might also be a problem because these uncompressed BIOS images might occupy a footprint of more than 64 K. This would initially occupy even more memory when initially copied from an associated Option ROM BIOS chip into the Option ROM memory space.
In addition to problems with memory usage in the Option ROM memory space, space within conventional memory and extended memory is also typically limited. Therefore, in cases where conventional memory, extended memory, and Option ROM memory space are filled, there is often no memory space available when code such as a configuration code from an Option ROM chip is desired to be run during the initialization process. When such a circumstance occurs, the configuration code that a user desires to run may not operate because the conventional memory and extended memory are filled. In addition, the Option ROM space as indicated above, may be filled with other types of Option ROM images and typically does not have enough space to load the configuration code. Unfortunately, when this occurs, configuration of certain types of devices may not be configured properly therefore degrading performance. Therefore, multiple problems can occur during an initialization process due to the limited amount of space available in the Option ROM space.
In view of the foregoing, what is needed is a new and improved methodology for optimizing memory resources available to a computer system during execution of the system BIOS in order to have the ability to run specialized initialization codes such as, for example, configuration code. Such an approach would thereby ensure proper initialization of the computer system.